/*
* 定义日志消息类，存储日志所需的中间信息
*       1.日志输出时间    (方便过滤日志输出时间)
*       2.日志等级        (用于进行日志过滤分析)
*       3.源文件名称      (定位错误文件)
*       4.源代码行号      (定位错误代码位置)
*       5.线程ID         (用于过滤出错的线程)
*       6.日志器名称      (在多日志器的情况下 方便筛选)
*       7.日志主体信息    (错误原因或异常情况)
*/

#ifndef _MESSAGE_H_
#define _MESSAGE_H_

#include "level.hpp"
#include "util.hpp"
#include <iostream>
#include <string>
#include <thread>

namespace Log
{
    //日志消息信息类
    struct LogMsg
    {
        time_t _ctime; //日志产生时间戳
        LogLevel::value _level; //日志等级
        size_t _line; //错误代码行号
        std::thread::id _tid; //线程ID
        std::string _file; //源文件名称
        std::string _logger; //日志器名称
        std::string _payload; //有效载荷-日志消息

        LogMsg(LogLevel::value level,
            size_t line,
            const std::string& file,
            const std::string& logger,
            const std::string& payload):
            _ctime(Log::LogUtil::Date::now()),
            _level(level),
            _line(line),
            _tid(std::this_thread::get_id()),
            _file(file),
            _logger(logger),
            _payload(payload) {}

    };
}


#endif